<?php
declare(strict_types=1); //开启严格模式。必须是第一句话
    // 标量类型声明
    /**
     * 默认情况下，所有php文件都处在弱类型校验模式
     * php7 增加了标量类型声明的特性，标量类型声明有两种模式：
     * 强制模式（默认）
     * 严格模式（strict_types=1）
     */
    function sum(int...$ints) {
        return array_sum($ints);
    }

    // var_dump(sum(1, 2, 3,'4')); //由于采用了严格模式，这里会报错，因为'4'是字符串类型，不能转换为整数，必须为int类型
    // var_dump(sum(1, 2, 3, 4.5)); //由于采用了严格模式，这里会报错，因为4.5是浮点类型，不能转换为整数，必须为int类型
    var_dump(sum(1, 2, 3, 4)); // 输出 int(10)
    echo "<hr>";

    // 返回值类型声明
    function returnIntValue($value):int {
        return $value;
    }

    var_dump(returnIntValue(10)); // 输出 int(10)
    echo "<hr>";

    // 可为空类型
    function textvalue() ?:string {
        return "Hello, World!";
    }